(function($) {
	$.extend({
		oSlides : function(settings) {
			var ps = $.extend({
				renderTo : $('#oSlidesBox'),
				
				id : 'scroll-container',
				
				maxItems : 5,
				
				speed : 'fast',
				
				delay : 7000,
				
				imgPath : new Array(),
				
				linkTo : new Array(),
				
				descr : new Array(),
				
				index : 0,
				
				hrefTarget : '_target',
				
				scrollEvent : 'hover',
				
				scroll : function(i) {
					slides.children('li').eq(ps.index).hide();
					pagers.children('span').eq(ps.index).find('a').removeClass('active');
					slides.children('li').eq(i).fadeIn(ps.speed);
					pagers.children('span').eq(i).find('a').addClass('active');
					ps.index = i;
				},
				
				nextPic : function() {
					i = ps.index < num-1 ? ps.index+1 : 0;
					ps.scroll(i);
				},
				
				interval : 0
			}, settings);

			ps.renderTo = (typeof ps.renderTo == 'string') ? $(ps.renderTo) : ps.renderTo;
			if( ! ps.imgPath.length > 0 || ! ps.renderTo.is('div')) {
				return ; 
			}

			var num = ps.maxItems > ps.imgPath.length ? ps.imgPath.length : ps.maxItems;

			var slides = $('<ul id="' + ps.id + '"></ul>');
			for(i in imgPath) {
				slide = $('<li></li>').prepend(
					$('<a></a>').
						attr('href', linkTo[i]).
						attr('target', ps.hrefTarget).
						prepend(
							$('<img />').
							attr('src', ps.imgPath[i]).
							attr('alt', ps.descr[i]).
							attr('title', ps.descr[i])
					)
				).hide();
				slide.appendTo(slides);
			}
			slides.prependTo(ps.renderTo);

			var pagers = $('<div id="paging"></div>').addClass('paging');
			for(i in imgPath) {
				pager = $('<span></span>').append(
					$('<a></a>').attr('href', '').text(++i)
				);
				pager.appendTo(pagers);	
			}
			pagers.appendTo(ps.renderTo);

			pagers.children('span').each(function(i, e) {
				btn = $(this).children('a');
				if(ps.scrollEvent == 'hover') {
					response = 'mouseover';
				} else if(ps.scrollEvent == 'click') {
					response = 'click';
				}
				btn.bind(response, function() {
					if(ps.index != i) {
						ps.scroll(i);
					}
					
					if(ps.scrollEvent == 'click') {
						intervalStop();
						intervalStart();
						return false;
					} else if(ps.scrollEvent == 'hover') {
						$(this).click(function() {
							return false;
						});
					}
				});
				
				if(ps.scrollEvent == 'hover') {
					btn.hover(function() {
						intervalStop();
					}, function() {
						intervalStart();
					});
				}
			});

			ps.scroll(ps.index);
			intervalStart();
			
			function intervalStart() {
				ps.interval = setInterval(ps.nextPic, ps.delay);
			}
			function intervalStop() {
				ps.interval = clearInterval(ps.interval);
			}
		}
	});
})(jQuery);